题解 AT2287@洛谷 | 2287@Atcoder 【Walk and Teleport】

真心不明白为什么这题是绿题,只是一个模拟。

读懂题意是关键

我第一次提交的时候对题面理解有误,加了一句sort(x, x+n);,结果WA了很多测试点。其实这里是需要按照顺序到达每个地点的QAQ。

模拟方法

对于每一个地点,判断两种方案中耗费疲劳值最少的方案,详见代码。

#include <iostream>
using namespace std;

#define ll long long

int main()
{
    ll n, a, b;
    cin>>n>>a>>b;
    ll x[100001];
    for(ll i=1;i<=n;i++) cin>>x[i];
    ll sum = 0;
    for(ll i=1;i<n;i++)
    {
        ll l = x[i+1] - x[i];
        sum += min(b, a*l);
    }
    cout<<sum<<endl;
	return 0;
}